﻿/**************************************************************************************************************
 * Class name:  ChineseLunisolarCalendarHelper.cs
 * Description: 将时间分成多个部分来表示，如分成年、月和日。 年按农历计算，而日和月按阴阳历计算
 * Author:      Ju2ender
 * Create:      2012-10-23 Tuesday 11:27:49
 * Update:      2012-10-23 Tuesday 11:27:49
 **************************************************************************************************************/

using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;

namespace DearLee.Toolkit.Globalization {

  /// <summary>
  /// 将时间分成多个部分来表示，如分成年、月和日。 年按农历计算，而日和月按阴阳历计算
  /// </summary>
  public class ChineseLunisolarCalendarHelper {

    /// <summary>
    /// 生肖树，常量
    /// </summary>
    public const string YEAR_TREE = "鼠牛虎兔龙蛇马羊猴鸡狗猪";

    /// <summary>
    /// 获取生肖，要求传入阳历的年月日
    /// </summary>
    /// <param name="year">年</param>
    /// <param name="month">月</param>
    /// <param name="day">日</param>
    /// <returns>生肖</returns>
    public static string GetYearOfBirth(string year, string month, string day) {

      ChineseLunisolarCalendar chineseCalender = null;
      DateTime dtm;
      int sexagenaryYear = 0; // 地支
      string yearOfBirth = string.Empty; // 生肖

      chineseCalender = new ChineseLunisolarCalendar();
      dtm = new DateTime(int.Parse(year), int.Parse(month), int.Parse(day)); // 使用传入年月日实例化时间
      sexagenaryYear = chineseCalender.GetSexagenaryYear(dtm); // 获得传入年月日的地支
      yearOfBirth = YEAR_TREE.Substring(chineseCalender.GetTerrestrialBranch(sexagenaryYear) - 1, 1); // 截取生肖
      
      return yearOfBirth;
    }
  }
}
